package my205;

import java.util.HashMap;
import java.util.Map;

public class SuanFa205 {
    /**
     * 给定两个字符串 s 和 t ，判断它们是否是同构的。
     *
     * 如果 s 中的字符可以按某种映射关系替换得到 t ，那么这两个字符串是同构的。
     *
     * 每个出现的字符都应当映射到另一个字符，同时不改变字符的顺序。不同字符不能映射到同一个字符上，相同字符只能映射到同一个字符上，字符可以映射到自己本身。
     * @param s
     * @param t
     * @return
     */
    public boolean isIsomorphic(String s, String t) {
        if (s.length() != t.length()){
            return false;
        }
        Map<Character,Character> map= new HashMap<>();
        Map<Character,Character> map2= new HashMap<>();

        for (int i = 0; i < s.length(); i++) {

            char c1 = s.charAt(i);
            char c2 = t.charAt(i);

            if ((map.containsKey(c1) && map.get(c1) != c2) || (map2.containsKey(c2) && map2.get(c2) != c1)){
                return false;
            }
            map.put(c1,c2);
            map2.put(c2,c1);
        }

        return true;

    }

    public static void main(String[] args) {
        SuanFa205 suanFa205 = new SuanFa205();
        boolean isomorphic = suanFa205.isIsomorphic("adc", "aad");
        System.out.println(isomorphic);
    }
}
